import { get, post, del } from '@/utils/request'

export interface Role {
    id: string
    name: string
    description?: string
    permissions?: string[]
}

export function getRoleList() {
    return new Promise<Role[]>((resolve, reject) => {
        get<Role[]>('/api/sys/role/list').then((res) => {
            console.debug('获取角色列表成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('获取角色列表失败', error);
            reject(error);
        });
    });
}

export function getRolePermissions(role_id: string) {
    return new Promise<Role>((resolve, reject) => {
        get<Role>('/api/sys/role/permission/list/' + role_id).then((res) => {
            console.debug('获取角色权限成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('获取角色权限失败', error);
            reject(error);
        });
    })
}

export function addRole(role: Role) {
    return new Promise<Role>((resolve, reject) => {
        post<Role>('/api/sys/role/create', role).then((res) => {
            console.debug('创建角色成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('创建角色失败', error);
            reject(error);
        });
    })
}

export function updateRole(role: Role) {
    return new Promise<Role>((resolve, reject) => {
        post<Role>('/api/sys/role/update', role).then((res) => {
            console.debug('更新角色成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('更新角色失败', error);
            reject(error);
        });
    })
}

export function updateRolePermission(role_id: string, permission_ids: string[]) {
    return new Promise<Role>((resolve, reject) => {
        post<Role>('/api/sys/role/update/permission', {
            role_id: role_id,
            permission_ids: permission_ids,
        }).then((res) => {
            console.debug('更新角色权限成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('更新角色权限失败', error);
            reject(error);
        });
    })
}

export function deleteRole(role_id: string) {
    return new Promise<Role>((resolve, reject) => {
        del<Role>('/api/sys/role/delete/' + role_id).then((res) => {
            console.debug('删除角色成功', res);
            resolve(res);
        }).catch((error) => {
            console.error('删除角色失败', error);
            reject(error);
        });
    })
}